<

TestTextInput 状態のリセット

まとめ

の状態TestTextInput実例、 システムのオンスクリーン キーボードのスタブ、 はテスト間でリセットされるようになりました。

コンテクスト

Flutter テスト フレームワークは、と呼ばれるクラスを使用します。TestTextInputウィジェットのテストで編集状態を追跡および操作します。 個々のテストは内部を変更する呼び出しを行うことができます このオブジェクトの状態、場合によっては間接的に (例: 独自のハンドラーを設定することでSystemChannels.textInput)。 後続のテストでは、次の状態をチェックする可能性があります。WidgetTester.testTextInputそして予期しない値が得られます。

変更内容の説明

の状態WidgetTester.testTextInputを実行する前にリセットされるようになりました。testWidgetsテスト。

移行ガイド

以前に実行されたダーティな状態に依存したテスト テストを更新する必要があります。たとえば、次のテストでは、 からpackages/flutter/test/material/text_field_test.dartの中に'Controller can update server'テスト、 ダーティ状態の組み合わせにより以前はパスされていました 以前のテストと実際の状態設定の失敗によるもの 設定する必要がある場合。

移行前のコード:

widgetsTest実際にテキストを変更する前に、 テキスト編集ウィジェットの場合、この呼び出しは成功した可能性があります。

    expect(tester.testTextInput.editingState['text'], isEmpty);

移行後のコード:

通話を完全に削除するか、 次のようにして、状態がまだ変更されていないことを確認します。

    expect(tester.testTextInput.editingState, isNull);

タイムライン

リリースされたバージョン: 1.16.3
安定版リリース: 1.17

参考文献

API ドキュメント:

  • TestTextInput
  • WidgetTester

関連する問題:

  • グローバルな状態を回避するためにテスト順序をランダム化する

関連する PR:

  • テスト間で状態をリセットする